Many different programming languages exist for different purposes. In the industrial sector, companies or amalgamations of companies have developed their own languages for communication or transaction within their networks. The interfaces for communication in these networks are often strictly defined but the locally used languages may differ from company to company even if they have the same purpose. One example therefore is the travel industry. Large networks enable automated transactions between travel service providers and travel agencies. The travel industry networks are called Global Distribution Systems (GDS) and use their own languages for interaction between their users. These languages are commonly known as Cryptic languages, e.g., Galileo Cryptic, Amadeus Cryptic, and Sabre Cryptic. Although Cryptic languages are used for the same purpose, commands formulated in different Cryptic languages have different syntactic rules.
Characteristic for all Cryptic languages are their sentences, commonly known as Cryptic commands. As in any natural language, a sentence is formulated by combination of words, thus, every Cryptic command is formulated as combination of Cryptic words. Cryptic words are composed of Cryptic symbols, which basically are characters. Cryptic words are mainly formulated as abbreviations of natural language meaning descriptions. An example would be the Cryptic word an in Amadeus Cryptic, which stands for numerical availability, or nce, which stands for Nice (city in the south of France). One of the Cryptic languages' specifics is the lack of explicit word separators. Therefore, it is hardly determined, without prior extensive knowledge of the Cryptic language syntax, where one word stops and the other begins. However, this knowledge is required if the human-computer-interaction shall be facilitated by giving auto-correction and auto-completion suggestions.
The issues of non-apparent segmentation and of varying syntaxes of different Cryptic languages can be mitigated by statically declaring the rules for each possible command construction. Even though Cryptic languages have a finite number of possible constructions, this particular endeavor is time and computational resources consuming. The task of collecting and possibly translating these rules to a more suitable format is as difficult as declaring them from zero point.
Another possibility to tackle these issues is constructing a dynamic self-learning method which extracts the rules from users' data. The most notable reason for such a dynamic approach can be found in the desire for ability to learn rules of all Cryptic languages. Furthermore, if new rules are declared in the future, the system will still properly operate.